package vuelos;

import java.awt.Color;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.WindowConstants;

import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.*;
import javax.swing.JComboBox;
import javax.swing.JSpinner;
import javax.swing.SpinnerDateModel;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.border.TitledBorder;

import java.sql.*;

@SuppressWarnings("serial")
public class EmployeScreen extends javax.swing.JInternalFrame {
	
	private int Ancho = 760;
	private int Alto  = 560;
	
	private Thread Quitando;
	private Thread Trayendo;
	
	private MainWindow FatherWindow;
	private Connection ConexionBD = null;
	
	private String UsuarioActual;
	private JTextField jTextFieldMensaje;
	
	private JPanel jPanelSeleccionVuelo;
	
	private JComboBox jComboBoxCiudadOrigen;
	private JComboBox jComboBoxCiudadDestino;
	
	private JSpinner jSpinnerFechaIda;
	private JSpinner jSpinnerFechaRegreso;
	
	private JScrollPane jPaneVuelosIda;
	private JScrollPane jPaneVuelosRegreso;
	private JTable jTableVuelosIda;
	private JTable jTableVuelosRegreso;
	
	private JScrollPane jPaneAsientosVuelosIda;
	private JScrollPane jPaneAsientosVuelosRegreso;
	private JTable jTableAsientosVuelosIda;
	private JTable jTableAsientosVuelosRegreso;
	
	private JLabel jLabelCiudadOrigen;
	private JLabel jLabelCiudadDestino;
	private JLabel jLabelVuelosIda;
	private JLabel jLabelVuelosRegreso;
	private JLabel jLabelAsientosIda;
	private JLabel jLabelAsientosRegreso;
	private JLabel jLabelFechaVuelosIda;
	private JLabel jLabelFechaVuelosRegreso;
	
	private JPanel jPanelSeleccionPasajero;
	private JPanel jPanelDatosPasajero;
	
	private JComboBox jComboBoxTipoDocumento; 
	private JTextField jTextFieldDocumento;
	
	private JTextField jTextFieldApellido;
	private JTextField jTextFieldNombre;
	private JTextField jTextFieldTelefono;
	private JTextField jTextFieldNacionalidad;
	
	private JNovaButton jNovaButtonPasajero;
	
	private JLabel jLabelDocumento;
	private JLabel jLabelDocumentoTipo;
	private JLabel jLabelApellido;
	private JLabel jLabelNombre;
	private JLabel jLabelNacionalidad;
	private JLabel jLabelTelefono;
	
	private JPanel jPanelDatosAdministrativos;
	
	private JTextField jTextFieldNroReserva;
	private JLabel jLabelNroReservaIda;
	private JTextField jTextFieldEstadoReserva;
	private JLabel jLabelEstadoReserva;
		
	private JLabel jLabelCuadroMensajes;
	
	private JNovaButton jNovaButtonVuelosRegreso;
	private JNovaButton jNovaButtonOcultar;
	private JNovaButton jNovaButtonConsultarVuelos;
	private JNovaButton jNovaButtonAdelante;
	private JNovaButton jNovaButtonAtras;
	private JNovaButton jNovaButtonReservar;

	// Constructor
	public EmployeScreen (MainWindow fatherWindow) {
		super();
		FatherWindow = fatherWindow;
		ConexionBD = FatherWindow.getConnection();
		Quitando = null;
		Trayendo = null;
		
		initComponents();	
	}
	
	// METODOS INICIALES
	
	// Init Components
	public void initComponents() {
        this.setBounds(1000, 20, Ancho, Alto);
        this.setTitle("Acceso Empleado");
        getContentPane().setLayout(null);
        this.setClosable(false);
        this.setDefaultCloseOperation(WindowConstants.HIDE_ON_CLOSE);
        this.setMaximizable(false);
        this.setVisible(true);
        
        // Cuadro de Mensaje
        jTextFieldMensaje = new JTextField();
        this.getContentPane().add(jTextFieldMensaje);
        jTextFieldMensaje.setBounds(280, 480, 220, 20);
        jTextFieldMensaje.setEditable(false);
        jTextFieldMensaje.setFocusable(false);
        jTextFieldMensaje.setEnabled(false);
        jTextFieldMensaje.setVisible(true);
        jTextFieldMensaje.setHorizontalAlignment(JTextField.CENTER);
        
        // Panel de Seleccion de Pasajero
        jPanelSeleccionPasajero = new JPanel();
        this.getContentPane().add(jPanelSeleccionPasajero);
        jPanelSeleccionPasajero.setBounds(0, 0, 760, 460);
        jPanelSeleccionPasajero.setLayout(null);
        jPanelSeleccionPasajero.setVisible(false);
        
        // Panel Enmarcado Datos del Pasajero
        jPanelDatosPasajero = new JPanel();
        jPanelSeleccionPasajero.add(jPanelDatosPasajero);
        jPanelDatosPasajero.setBounds(30, 15, 335, 400);
        jPanelDatosPasajero.setLayout(null);
        jPanelDatosPasajero.setBorder(new TitledBorder("Datos del Pasajero"));
        
        // Text Field Numero de Documento
        jTextFieldDocumento = new JTextField();
        jPanelDatosPasajero.add(jTextFieldDocumento);
        jTextFieldDocumento.setBounds(30, 50, 140, 20);
        jTextFieldDocumento.addKeyListener(new KeyAdapter() {
			public void keyPressed(KeyEvent evt) {
				jTextFieldDocumentoKeyPressed(evt);
			}
		});
        
        // Combo Box Tipo de Ducumento
        jComboBoxTipoDocumento = new JComboBox();
        jPanelDatosPasajero.add(jComboBoxTipoDocumento );
        jComboBoxTipoDocumento .setEditable(true);
        jComboBoxTipoDocumento .setBounds(185, 50, 80, 20);
        
        // Text Fields Datos de Pasajero
        jTextFieldApellido = new JTextField();
        jPanelDatosPasajero.add(jTextFieldApellido);
        jTextFieldApellido.setBounds(30, 100, 140, 20);
        jTextFieldApellido.setEnabled(false);
        
        jTextFieldNombre = new JTextField();
        jPanelDatosPasajero.add(jTextFieldNombre);
        jTextFieldNombre.setBounds(30, 150, 140, 20);
        jTextFieldNombre.setEnabled(false);
        
        jTextFieldNacionalidad = new JTextField();
        jPanelDatosPasajero.add(jTextFieldNacionalidad);
        jTextFieldNacionalidad.setBounds(30, 200, 140, 20);
        jTextFieldNacionalidad.setEnabled(false);
        
        jTextFieldTelefono = new JTextField();
        jPanelDatosPasajero.add(jTextFieldTelefono);
        jTextFieldTelefono.setBounds(30, 250, 140, 20);
        jTextFieldTelefono.setEnabled(false);
        
        // Etiquetas de Datos de Pasajero
        jLabelDocumento = new JLabel("Documento Numero");
        jPanelDatosPasajero.add(jLabelDocumento);
        jLabelDocumento.setBounds(32, 35, jLabelDocumento.getPreferredSize().width, jLabelDocumento.getPreferredSize().height);
        
        jLabelDocumentoTipo = new JLabel("Tipo");
        jPanelDatosPasajero.add(jLabelDocumentoTipo);
        jLabelDocumentoTipo.setBounds(187, 35, jLabelDocumentoTipo.getPreferredSize().width, jLabelDocumentoTipo.getPreferredSize().height);
        
        jLabelApellido = new JLabel("Apellido");
        jPanelDatosPasajero.add(jLabelApellido);
        jLabelApellido.setBounds(32, 85, jLabelApellido.getPreferredSize().width, jLabelApellido.getPreferredSize().height);
        
        jLabelNombre = new JLabel("Nombre");
        jPanelDatosPasajero.add(jLabelNombre);
        jLabelNombre.setBounds(32, 135, jLabelNombre.getPreferredSize().width,jLabelNombre.getPreferredSize().height);
        
        jLabelNacionalidad = new JLabel("Nacionalidad");
        jPanelDatosPasajero.add(jLabelNacionalidad);
        jLabelNacionalidad.setBounds(32, 185, jLabelNacionalidad.getPreferredSize().width, jLabelNacionalidad.getPreferredSize().height);
        
        jLabelTelefono = new JLabel("Telefono");
        jPanelDatosPasajero.add(jLabelTelefono);
        jLabelTelefono.setBounds(32, 235, jLabelTelefono.getPreferredSize().width, jLabelTelefono.getPreferredSize().height);
        jLabelTelefono.repaint();
                
        // Boton Encontrar Pasajero
        jNovaButtonPasajero = new JNovaButton("/images/BotonPersonaFree.png", "/images/BotonPersonaArmed.png");        
        jPanelDatosPasajero.add(jNovaButtonPasajero);
        jNovaButtonPasajero.setBounds(190, 100, jNovaButtonPasajero.getPreferredSize().width, jNovaButtonPasajero.getPreferredSize().height);
        jNovaButtonPasajero.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent evt) {
				BotonPasajeroMouseClicked(evt);
			}
		});
        jNovaButtonPasajero.setToolTipText("Encontrar Pasajero"); 
        
        // Panel Enmarcado Datos de Embaque
        jPanelDatosAdministrativos = new JPanel();
        jPanelSeleccionPasajero.add(jPanelDatosAdministrativos);
        jPanelDatosAdministrativos.setBounds(390, 15, 335, 400);
        jPanelDatosAdministrativos.setLayout(null);
        TitledBorder TitleDatosEmbarque = new TitledBorder("Datos Administrativos");
        jPanelDatosAdministrativos.setBorder(TitleDatosEmbarque);
        
        // Text Fields Datos Administrativos
        jTextFieldNroReserva = new JTextField();
        jPanelDatosAdministrativos.add(jTextFieldNroReserva);
        jTextFieldNroReserva.setBounds(30, 50, 140, 20);
        jTextFieldNroReserva.setEnabled(false);
        
        jTextFieldEstadoReserva = new JTextField();
        jPanelDatosAdministrativos.add(jTextFieldEstadoReserva);
        jTextFieldEstadoReserva.setBounds(30, 100, 140, 20);
        jTextFieldEstadoReserva.setEnabled(false);
        
        // Etiquetas de Datos Administrativos
        jLabelNroReservaIda = new JLabel("Nro. de Reserva");
        jPanelDatosAdministrativos.add(jLabelNroReservaIda);
        jLabelNroReservaIda.setBounds(32, 35, jLabelNroReservaIda.getPreferredSize().width, jLabelNroReservaIda.getPreferredSize().height);

        jLabelEstadoReserva = new JLabel("Estado de Reserva");
        jPanelDatosAdministrativos.add(jLabelEstadoReserva);
        jLabelEstadoReserva.setBounds(32, 85, jLabelEstadoReserva.getPreferredSize().width, jLabelEstadoReserva.getPreferredSize().height);

        // Panel de Seleccion de Vuelo
        jPanelSeleccionVuelo = new JPanel();
        this.getContentPane().add(jPanelSeleccionVuelo);
        jPanelSeleccionVuelo.setBounds(0, 0, 760, 460);
        jPanelSeleccionVuelo.setLayout(null);
        jPanelSeleccionVuelo.setVisible(true);
        
        // Etiquetas 
        jLabelCuadroMensajes = new JLabel("Cuadro de Mensajes");
        this.getContentPane().add(jLabelCuadroMensajes);
        jLabelCuadroMensajes.setBounds(340, 505, jLabelCuadroMensajes.getPreferredSize().width, jLabelCuadroMensajes.getPreferredSize().height);
        jLabelCuadroMensajes.repaint();
        
        jLabelCiudadOrigen = new JLabel("Ciudad Origen");
        jPanelSeleccionVuelo.add(jLabelCiudadOrigen);
        jLabelCiudadOrigen.setBounds(32, 15, jLabelCiudadOrigen.getPreferredSize().width, jLabelCiudadOrigen.getPreferredSize().height);
        jLabelCiudadOrigen.repaint();
        
        jLabelCiudadDestino = new JLabel("Ciudad Destino");
        jPanelSeleccionVuelo.add(jLabelCiudadDestino);
        jLabelCiudadDestino.setBounds(202, 15, jLabelCiudadDestino.getPreferredSize().width, jLabelCiudadDestino.getPreferredSize().height);
        jLabelCiudadDestino.repaint();
        
        jLabelFechaVuelosIda = new JLabel("Fecha Vuelos de Ida");
        jPanelSeleccionVuelo.add(jLabelFechaVuelosIda);
        jLabelFechaVuelosIda.setBounds(372, 15, jLabelFechaVuelosIda.getPreferredSize().width, jLabelFechaVuelosIda.getPreferredSize().height);
        jLabelFechaVuelosIda.repaint();
        
        jLabelFechaVuelosRegreso = new JLabel("Fecha Vuelos de Regreso");
        jPanelSeleccionVuelo.add(jLabelFechaVuelosRegreso);
        jLabelFechaVuelosRegreso.setBounds(587, 15, jLabelFechaVuelosRegreso.getPreferredSize().width, jLabelFechaVuelosRegreso.getPreferredSize().height);
        jLabelFechaVuelosRegreso.repaint();
        
        jLabelVuelosIda = new JLabel("Vuelos de Ida");
        jPanelSeleccionVuelo.add(jLabelVuelosIda);
        jLabelVuelosIda.setBounds(32, 55, jLabelVuelosIda.getPreferredSize().width, jLabelVuelosIda.getPreferredSize().height);
        jLabelVuelosIda.repaint();
        
        jLabelVuelosRegreso = new JLabel("Vuelos de Regreso");
        jPanelSeleccionVuelo.add(jLabelVuelosRegreso);
        jLabelVuelosRegreso.setBounds(32, 255, jLabelVuelosRegreso.getPreferredSize().width, jLabelVuelosRegreso.getPreferredSize().height);
        jLabelVuelosRegreso.repaint();
        
        jLabelAsientosIda = new JLabel("Asientos Disponibles");
        jPanelSeleccionVuelo.add(jLabelAsientosIda);
        jLabelAsientosIda.setBounds(532, 55, jLabelAsientosIda.getPreferredSize().width, jLabelAsientosIda.getPreferredSize().height);
        jLabelAsientosIda.repaint();
        
        jLabelAsientosRegreso = new JLabel("Asientos Disponibles");
        jPanelSeleccionVuelo.add(jLabelAsientosRegreso);
        jLabelAsientosRegreso.setBounds(532, 255, jLabelAsientosRegreso.getPreferredSize().width, jLabelAsientosRegreso.getPreferredSize().height);
        jLabelAsientosRegreso.repaint();
        
        // Combo Box Ciudad Origen
        jComboBoxCiudadOrigen = new JComboBox();
        jPanelSeleccionVuelo.add(jComboBoxCiudadOrigen);
        jComboBoxCiudadOrigen.setEditable(true);
		jComboBoxCiudadOrigen.setBounds(30, 30, 140, 20);	
        
        // Combo Box Ciudad Destino 
        jComboBoxCiudadDestino = new JComboBox();
        jPanelSeleccionVuelo.add(jComboBoxCiudadDestino);
        jComboBoxCiudadDestino.setEditable(true);
		jComboBoxCiudadDestino.setBounds(200, 30, 140, 20);
		
		// Spinner de Fecha Vuelo Ida
		jSpinnerFechaIda = new JSpinner(new SpinnerDateModel());		
		jSpinnerFechaIda.setEditor(new JSpinner.DateEditor(jSpinnerFechaIda, "dd-MM-yyyy"));
		jPanelSeleccionVuelo.add(jSpinnerFechaIda);
		jSpinnerFechaIda.setBounds(370, 30, 140, 20);
		
		// Spinner de Fecha Vuelo Regreso
		jSpinnerFechaRegreso = new JSpinner(new SpinnerDateModel());		
		jSpinnerFechaRegreso.setEditor(new JSpinner.DateEditor(jSpinnerFechaRegreso, "dd-MM-yyyy"));
		jPanelSeleccionVuelo.add(jSpinnerFechaRegreso);
		jSpinnerFechaRegreso.setBounds(585, 30, 140, 20);
		jSpinnerFechaRegreso.setEnabled(false);
		
		// Boton Chequeo de Vuelos de Regreso
		jNovaButtonVuelosRegreso = new JNovaButton("/images/VuelosRetornoFree.png", "/images/VuelosRetornoArmed.png");
		jPanelSeleccionVuelo.add(jNovaButtonVuelosRegreso);
        jNovaButtonVuelosRegreso.setBounds(555, 29, jNovaButtonVuelosRegreso.getPreferredSize().width, jNovaButtonVuelosRegreso.getPreferredSize().height);
        jNovaButtonVuelosRegreso.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent evt) {
				jNovaButtonVuelosRegresoMouseClicked(evt);
			}
		});
        jNovaButtonVuelosRegreso.setFocusable(false);
        jNovaButtonVuelosRegreso.setToolTipText("Havilitar Vuelos de Retorno");
        jNovaButtonVuelosRegreso.repaint(); 
		
		// Scroll panel para la tabla de Vuelos Ida
		jPaneVuelosIda = new JScrollPane();
		jPanelSeleccionVuelo.add(jPaneVuelosIda);
		jPaneVuelosIda.setBounds(30, 70, 480, 180);
		
        // Tabla Vuelos Ida
		jTableVuelosIda = new JTable();
		jPaneVuelosIda.setViewportView(jTableVuelosIda);
		jTableVuelosIda.setModel(new TableModelVuelos());
		jTableVuelosIda.setAutoCreateRowSorter(true);
		jTableVuelosIda.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		jTableVuelosIda.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent evt) {
				jTableVuelosIdaMouseClicked(evt);
			}
		});
		
		// Scroll panel para la tabla de Vuelos Regreso
		jPaneVuelosRegreso = new JScrollPane();
		jPanelSeleccionVuelo.add(jPaneVuelosRegreso);
		jPaneVuelosRegreso.setBounds(30, 270, 480, 180);
		
		// Tabla Vuelos Regreso
		jTableVuelosRegreso = new JTable();
		jPaneVuelosRegreso.setViewportView(jTableVuelosRegreso);
		jTableVuelosRegreso.setModel(new TableModelVuelos());
		jTableVuelosRegreso.setAutoCreateRowSorter(true);
		jTableVuelosRegreso.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		jTableVuelosRegreso.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent evt) {
				jTableVuelosRegresoMouseClicked(evt);
			}
		});
		
		// Scroll panel para la tabla de Asientos Vuelos Ida
		jPaneAsientosVuelosIda = new JScrollPane();
		jPanelSeleccionVuelo.add(jPaneAsientosVuelosIda);
		jPaneAsientosVuelosIda.setBounds(530, 70, 195, 180);
		
		// Tabla Asientos Disponibles Vuelos Ida
		jTableAsientosVuelosIda = new JTable();
		jPaneAsientosVuelosIda.setViewportView(jTableAsientosVuelosIda);
		jTableAsientosVuelosIda.setModel(new TableModelAsientos());
		jTableAsientosVuelosIda.setAutoCreateRowSorter(true);
		jTableAsientosVuelosIda.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		jTableAsientosVuelosIda.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent evt) {
				jTableAsientosMouseClicked(evt);
			}
		});
		
		// Scroll panel para la tabla de Asientos Vuelos Regreso
		jPaneAsientosVuelosRegreso = new JScrollPane();
		jPanelSeleccionVuelo.add(jPaneAsientosVuelosRegreso);
		jPaneAsientosVuelosRegreso.setBounds(530, 270, 195, 180);
		
		// Tabla Asientos Disponibles Vuelos Regreso
		jTableAsientosVuelosRegreso = new JTable();
		jPaneAsientosVuelosRegreso.setViewportView(jTableAsientosVuelosRegreso);
		jTableAsientosVuelosRegreso.setModel(new TableModelAsientos());
		jTableAsientosVuelosRegreso.setAutoCreateRowSorter(true);
		jTableAsientosVuelosRegreso.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
		jTableAsientosVuelosRegreso.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent evt) {
				jTableAsientosMouseClicked(evt);
			}
		});

        // Boton Ocultar
        jNovaButtonOcultar = new JNovaButton("/images/BotonOcultarFree.png", "/images/BotonOcultarArmed.png");        
        getContentPane().add(jNovaButtonOcultar);
        jNovaButtonOcultar.setBounds(666, 466, jNovaButtonOcultar.getPreferredSize().width, jNovaButtonOcultar.getPreferredSize().height);
        jNovaButtonOcultar.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent evt) {
				BotonOcultarMouseClicked(evt);
			}
		});
        jNovaButtonOcultar.setFocusable(false);
        jNovaButtonOcultar.setToolTipText("Salir");
        jNovaButtonOcultar.repaint(); 
        
        // Boton Consultar Vuelos
        jNovaButtonConsultarVuelos = new JNovaButton("/images/BotonConsultarVuelosFree.png", "/images/BotonConsultarVuelosArmed.png");
        getContentPane().add(jNovaButtonConsultarVuelos);
        jNovaButtonConsultarVuelos.setBounds(30, 464, jNovaButtonConsultarVuelos.getPreferredSize().width, jNovaButtonConsultarVuelos.getPreferredSize().height);
        jNovaButtonConsultarVuelos.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent evt) {
				BotonConsultarVuelosMouseClicked(evt);
			}
		});
        jNovaButtonConsultarVuelos.setFocusable(true);
        jNovaButtonConsultarVuelos.setToolTipText("Consultar Vuelos");
        jNovaButtonConsultarVuelos.repaint(); 
        
        // Boton Para Pasar a la Etapa de Seleccion de Pasajero
        jNovaButtonAdelante = new JNovaButton("/images/BotonAceptarPFree.png", "/images/BotonAceptarPArmed.png");
        getContentPane().add(jNovaButtonAdelante);
        jNovaButtonAdelante.setBounds(109, 464, jNovaButtonAdelante.getPreferredSize().width, jNovaButtonAdelante.getPreferredSize().height);
        jNovaButtonAdelante.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent evt) {
				BotonAdelanteMouseClicked(evt);
			}
		});
        jNovaButtonAdelante.setFocusable(true);
        jNovaButtonAdelante.setToolTipText("Seleccionar Pasajero");
        jNovaButtonAdelante.repaint(); 
        
        // Boton Para Pasar Regresar a la etapa de Seleccionar Vuelo
        jNovaButtonAtras = new JNovaButton("/images/BotonCancelarPFree.png", "/images/BotonCancelarPArmed.png");
        getContentPane().add(jNovaButtonAtras);
        jNovaButtonAtras.setBounds(109, 464, jNovaButtonAtras.getPreferredSize().width, jNovaButtonAtras.getPreferredSize().height);
        jNovaButtonAtras.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent evt) {
				BotonAtrasMouseClicked(evt);
			}
		});
        jNovaButtonAtras.setFocusable(false);
        jNovaButtonAtras.setVisible(false);
        jNovaButtonAtras.setToolTipText("Seleccionar Vuelo"); 
        
        // Boton Realizar Reserva
        jNovaButtonReservar = new JNovaButton("/images/BotonReservaFree.png", "/images/BotonReservaArmed.png");
        getContentPane().add(jNovaButtonReservar);
        jNovaButtonReservar.setBounds(30, 464, jNovaButtonReservar.getPreferredSize().width, jNovaButtonReservar.getPreferredSize().height);
        jNovaButtonReservar.addMouseListener(new MouseAdapter() {
			public void mouseClicked(MouseEvent evt) {
				BotonReservarMouseClicked(evt);
			}
		});
        jNovaButtonReservar.setFocusable(true);
        jNovaButtonReservar.setToolTipText("Realizar Reserva");
        jNovaButtonReservar.setVisible(false);
        
	}
	
	// Metodo para Mostrar esta ventana
	@SuppressWarnings("deprecation")
	public void traer(String usuarioActual){
		if(Quitando != null) {
			if(Quitando.isAlive()) {
			   Quitando.stop();
		}}
		Trayendo = new Thread(new EmployeScreenTraer (this));
		Trayendo.start();
		ConexionBD = FatherWindow.getConnection();
		CalcularCiudades("", jComboBoxCiudadOrigen);
		CalcularCiudades("", jComboBoxCiudadDestino);
		CalcularTiposDocumento(jComboBoxTipoDocumento);
		jComboBoxCiudadOrigen.grabFocus();
		
		UsuarioActual = usuarioActual;
		this.setTitle(this.getTitle() + ": " + UsuarioActual);
		System.out.println(UsuarioActual);
	}
	
	// Metodo para Ocultar esta ventana
	@SuppressWarnings("deprecation")
	private void quitar() {
		if(Trayendo != null) {
		    if (Trayendo.isAlive()) {
		 	    Trayendo.stop();
		}}
		Quitando = new Thread(new EmployeScreenQuitar (this));
		Quitando.start();
		
		this.Clear();
		this.setTitle("Assceso Empleado");
		UsuarioActual = "";
	}
	
	// ESCUCHAS
	
	// Escucha Tablas de Asientos de Clase
	private void jTableAsientosMouseClicked(MouseEvent evt){
		new PlaySound("/sounds/SelectRow.wav").start();
	}
	
	// Escucha Text Field Numero de Documento
	private void jTextFieldDocumentoKeyPressed(KeyEvent evt){
		if(evt.getKeyCode() == KeyEvent.VK_ENTER) {
		   BotonPasajeroMouseClicked(null);
		}
		else {
		   jTextFieldMensaje.setDisabledTextColor(Color.black);
		   jTextFieldMensaje.setText("Esperando");
		}
	}
	
	// Escucha Boton Encontrar Pasajero
	private void BotonPasajeroMouseClicked(MouseEvent evt){		
		jTextFieldApellido.setText(""); 
		jTextFieldNombre.setText("");
		jTextFieldNacionalidad.setText("");
		jTextFieldTelefono.setText("");
		jTextFieldNroReserva.setText("");
		jTextFieldEstadoReserva.setText("");
		jTextFieldMensaje.setDisabledTextColor(Color.black);
		jTextFieldMensaje.setText("Esperando");
		try {
		  Integer.parseInt(jTextFieldDocumento.getText());
		  Statement stmt = this.ConexionBD.createStatement();
		  String sql = "SELECT apellido, nombre, nacionalidad, telefono " +
			      		 "FROM pasajeros " +
			      		 "WHERE doc_tipo = '" + 
			      		  jComboBoxTipoDocumento.getItemAt(jComboBoxTipoDocumento.getSelectedIndex()) +
			      		 "' AND doc_nro = " + jTextFieldDocumento.getText() + ";";
			  System.out.println(sql);		  
			  ResultSet rs = stmt.executeQuery(sql);		      
			  if (rs.next()){
				 new PlaySound("/sounds/ButtonClick.wav").start(); 
				 jTextFieldApellido.setText(rs.getString("apellido")); 
				 jTextFieldNombre.setText(rs.getString("nombre"));
				 jTextFieldNacionalidad.setText(rs.getString("nacionalidad"));
				 jTextFieldTelefono.setText(rs.getString("telefono"));
			  }
			  else {
				 new PlaySound("/sounds/ButtonStop.wav").start(); 
				 jTextFieldMensaje.setDisabledTextColor(Color.red);
				 jTextFieldMensaje.setText("Pasajero Inexistente");
			  }
			  rs.close();
			  stmt.close();		      
		}
	    catch (Exception ex) {
		  System.out.println (ex.getMessage());
		  new PlaySound("/sounds/ButtonStop.wav").start();
		  jTextFieldMensaje.setDisabledTextColor(Color.red);
		  jTextFieldMensaje.setText("Error de Entrada");
		}		
	}
	
	// Escucha Boton Adelante: Pasa a la Etapa de Seleccionar Pasajero
	private void BotonAdelanteMouseClicked(MouseEvent evt){
		
		boolean Continuar = false;
		
		if (FechasCorrectas()) {
			if (jTableVuelosIda.getSelectedRow() == -1) {
				jTextFieldMensaje.setDisabledTextColor(Color.red);
				jTextFieldMensaje.setText("Seleccione Vuelo Ida");
			} else {
			if (jTableAsientosVuelosIda.getSelectedRow() == -1) {
				jTextFieldMensaje.setDisabledTextColor(Color.red);
				jTextFieldMensaje.setText("Seleccione Clase Ida");
			} else {
			if (jSpinnerFechaRegreso.isEnabled()) {
				if (jTableVuelosRegreso.getSelectedRow() == -1) {
					jTextFieldMensaje.setDisabledTextColor(Color.red);
					jTextFieldMensaje.setText("Seleccione Vuelo Regreso");
				} else {
				if (jTableAsientosVuelosRegreso.getSelectedRow() == -1) {
					jTextFieldMensaje.setDisabledTextColor(Color.red);
					jTextFieldMensaje.setText("Seleccione Clase Regreso");
				} else { // ALL OK
					Continuar = true;
				}}
			} else { // ALL OK
				Continuar = true;				
			}}}
		}
		
		if (Continuar) {
			new PlaySound("/sounds/ButtonClick.wav").start();
			
			jTextFieldMensaje.setDisabledTextColor(Color.black);
			jTextFieldMensaje.setText("Esperando");
			
			jPanelSeleccionVuelo.setVisible(false);
			jPanelSeleccionPasajero.setVisible(true);
			
			jNovaButtonAdelante.setVisible(false);
			jNovaButtonConsultarVuelos.setVisible(false);
			
			jNovaButtonReservar.setVisible(true);
			jNovaButtonAtras.setVisible(true);
			jNovaButtonAtras.repaint();
			
			jTextFieldNroReserva.setText("");
			jTextFieldEstadoReserva.setText("");
			
		}
		else {
			new PlaySound("/sounds/ButtonStop.wav").start();
		}
	}
	
	// Escucha Boton Atras: Regresa a la Etapa de Seleccionar Vuelo
	private void BotonAtrasMouseClicked(MouseEvent evt){
		
		new PlaySound("/sounds/ButtonClick.wav").start();		
		jPanelSeleccionVuelo.setVisible(true);
		jPanelSeleccionPasajero.setVisible(false);
		
		jNovaButtonAdelante.setVisible(true);
		jNovaButtonConsultarVuelos.setVisible(true);
		
		jNovaButtonReservar.setVisible(false);
		jNovaButtonAtras.setVisible(false);
		
		jTextFieldMensaje.setDisabledTextColor(Color.black);
		jTextFieldMensaje.setText("Esperando");
		
		jTextFieldNroReserva.setText("");
		jTextFieldEstadoReserva.setText("");
	
	}
	
	// Escucha Boton Ocultar
	private void BotonOcultarMouseClicked(MouseEvent evt) {
		new PlaySound("/sounds/ButtonClick.wav").start();
		try {
		  Thread.sleep(20);
	    } catch (Exception ex) {
		  System.out.println(ex.getMessage());
	    }
		this.quitar();
		FatherWindow.showLoginWindow();
	}
	
	// Escucha Boton Consular Vuelos
	private void BotonConsultarVuelosMouseClicked(MouseEvent evt) {
        ((DefaultTableModel) this.jTableVuelosIda.getModel()).setRowCount(0);
		((DefaultTableModel) this.jTableAsientosVuelosIda.getModel()).setRowCount(0);
		((DefaultTableModel) this.jTableVuelosRegreso.getModel()).setRowCount(0);
		((DefaultTableModel) this.jTableAsientosVuelosRegreso.getModel()).setRowCount(0);
		if (FechasCorrectas()){
			new PlaySound("/sounds/ButtonClick.wav").start();
	        jTextFieldMensaje.setDisabledTextColor(Color.green);
	        jTextFieldMensaje.setText("Correcto");
		try {		
		   // Tabla Vuelos Ida //			
           Statement stmt = this.ConexionBD.createStatement();
		   String sql = "SELECT vuelos_disponibles.vuelo, " +
		   					   "Origen_Codigo, Origen_Nombre, " +
		   					   "vuelos_disponibles.hora_sale, " +
		   					   "Destino_Codigo, Destino_Nombre, " +
		   					   "vuelos_disponibles.hora_llega, " +
		   					   "salidas.modelo_avion AS modelo, " +
		   					   "TIME_FORMAT(TIME(vuelos_disponibles.hora_llega) - " +
		   					   "            TIME(vuelos_disponibles.hora_sale)," +
		   					   "            '%h:%i:%s') AS TiempoEstimado " +		   				
		      			"FROM   vuelos_disponibles NATURAL JOIN salidas "  +
		      			"WHERE  " +
		      			       "Origen_Ciudad = '" + 
		      			        jComboBoxCiudadOrigen.getItemAt(jComboBoxCiudadOrigen.getSelectedIndex()) +
		      			       "' AND " +
		      			       "Destino_Ciudad = '" +
		      			        jComboBoxCiudadDestino.getItemAt(jComboBoxCiudadDestino.getSelectedIndex()) +
		   					   "' AND " +
		   					   "fecha = '" +
		   					    new java.text.SimpleDateFormat("yyyy-MM-dd").format(jSpinnerFechaIda.getValue()) +
		   				"' GROUP BY vuelo;"; 
		    System.out.println(sql);
		    ResultSet rs = stmt.executeQuery(sql);
	        int i = 0;
		    while (rs.next()){
		      ((DefaultTableModel) this.jTableVuelosIda.getModel()).setRowCount(i + 1); 
		      
		      this.jTableVuelosIda.setValueAt(rs.getString("vuelo"), i, 0);
		      this.jTableVuelosIda.setValueAt(
		    		  "[" + rs.getString("Origen_Codigo")+ "]" + rs.getString("Origen_Nombre"), i, 1);
		      this.jTableVuelosIda.setValueAt(rs.getString("hora_sale"), i, 2);
		      this.jTableVuelosIda.setValueAt(
		    		  "[" + rs.getString("Destino_Codigo")+ "]" + rs.getString("Destino_Nombre"), i, 3);
		      this.jTableVuelosIda.setValueAt(rs.getString("hora_llega"), i, 4);
		      this.jTableVuelosIda.setValueAt(rs.getString("modelo"), i, 5);
		      this.jTableVuelosIda.setValueAt(rs.getString("TiempoEstimado"), i, 6);
		      i++;
		    } 
	        rs.close();
	        stmt.close();
	        
	        if (this.jSpinnerFechaRegreso.isEnabled()) {
	        
		    // Tabla Vuelos Regreso //
	        stmt = this.ConexionBD.createStatement();
		    sql = "SELECT vuelos_disponibles.vuelo, " +
				   	     "Origen_Codigo, Origen_Nombre, " +
				   		 "vuelos_disponibles.hora_sale, " +
				   		 "Destino_Codigo, Destino_Nombre, " +
				   		 "vuelos_disponibles.hora_llega, " +
				   		 "salidas.modelo_avion AS modelo, " +
				   		 "TIME_FORMAT(TIME(vuelos_disponibles.hora_llega) - " +	
				   		 "            TIME(vuelos_disponibles.hora_sale)," +
				   		 "            '%h:%i:%s') AS TiempoEstimado " +
				  "FROM   vuelos_disponibles NATURAL JOIN salidas "  +
				  "WHERE  " +
				          "Origen_Ciudad = '" + 
				          jComboBoxCiudadDestino.getItemAt(jComboBoxCiudadDestino.getSelectedIndex()) +
				          "' AND " +
				          "Destino_Ciudad = '" +
				          jComboBoxCiudadOrigen.getItemAt(jComboBoxCiudadOrigen.getSelectedIndex()) +
				          "' AND " +
				          "fecha = '" +
				          new java.text.SimpleDateFormat("yyyy-MM-dd").format(jSpinnerFechaRegreso.getValue()) +
			   	  "' GROUP BY vuelo;"; 
			System.out.println(sql);
			rs = stmt.executeQuery(sql);
			i = 0;
			while (rs.next()){
				((DefaultTableModel) this.jTableVuelosRegreso.getModel()).setRowCount(i + 1); 
				      
				this.jTableVuelosRegreso.setValueAt(rs.getString("vuelo"), i, 0);
				this.jTableVuelosRegreso.setValueAt(
				    "[" + rs.getString("Origen_Codigo")+ "]" + rs.getString("Origen_Nombre"), i, 1);
				this.jTableVuelosRegreso.setValueAt(rs.getString("hora_sale"), i, 2);
				this.jTableVuelosRegreso.setValueAt(
				    "[" + rs.getString("Destino_Codigo")+ "]" + rs.getString("Destino_Nombre"), i, 3);
				this.jTableVuelosRegreso.setValueAt(rs.getString("hora_llega"), i, 4);
				this.jTableVuelosRegreso.setValueAt(rs.getString("modelo"), i, 5);
				this.jTableVuelosRegreso.setValueAt(rs.getString("TiempoEstimado"), i, 6);
				i++;
			}	   
		    
	        rs.close();
	        stmt.close();
	       }
	        
		   }
		   catch (Exception ex) {
			  System.out.println(ex.getMessage());
		   }}
		else { // Fechas Incorrectas
		  new PlaySound("/sounds/ButtonStop.wav").start();	
		}
	}

	// Escucha Boton Consular Vuelos Regreso
	private void jNovaButtonVuelosRegresoMouseClicked(MouseEvent evt) {
		
	  new PlaySound("/sounds/SelectClick.wav").start();
	  	
	  javax.swing.Icon Temp = jNovaButtonVuelosRegreso.getIcon();   	
	  jNovaButtonVuelosRegreso.setIcon(jNovaButtonVuelosRegreso.ButtonArmed);
	  jNovaButtonVuelosRegreso.ButtonArmed = Temp;
	  
	  jSpinnerFechaRegreso.setEnabled(!jSpinnerFechaRegreso.isEnabled());
	  
	  if(!jSpinnerFechaRegreso.isEnabled()) {
		((DefaultTableModel) this.jTableVuelosRegreso.getModel()).setRowCount(0);
		((DefaultTableModel) this.jTableAsientosVuelosRegreso.getModel()).setRowCount(0); 
	  }
	}
	
	// Escucha Seleccion de Tabla Vuelos Ida
	private void jTableVuelosIdaMouseClicked(MouseEvent evt){		
		try {	
		  new PlaySound("/sounds/SelectRow.wav").start();	
	      Statement stmt = this.ConexionBD.createStatement();
	      String sql = "SELECT vuelos_disponibles.clase, " +
	      		              "vuelos_disponibles.Asientos_Disponibles, " +
	      		              "brinda.precio " +
	      		       "FROM   vuelos_disponibles NATURAL JOIN brinda " +
	      		       "WHERE  vuelos_disponibles.vuelo = '" +
	      		               jTableVuelosIda.getValueAt(jTableVuelosIda.getSelectedRow(), 0).toString() + "' AND " +
	      		              "vuelos_disponibles.fecha = '" +
	      		               new java.text.SimpleDateFormat("yyyy-MM-dd").format(jSpinnerFechaIda.getValue()) + "';";        
		  System.out.println(sql);
		  ResultSet rs = stmt.executeQuery(sql);
		  ((DefaultTableModel) this.jTableAsientosVuelosIda.getModel()).setRowCount(0);
		  int i = 0;
		  while (rs.next()){
			((DefaultTableModel) this.jTableAsientosVuelosIda.getModel()).setRowCount(i + 1); 
			      
			this.jTableAsientosVuelosIda.setValueAt(rs.getString("clase"), i, 0);
			this.jTableAsientosVuelosIda.setValueAt(rs.getInt("Asientos_Disponibles"), i, 1);
			this.jTableAsientosVuelosIda.setValueAt(rs.getFloat("precio"), i, 2);
			i++;
		  }
			    
		  rs.close();
		  stmt.close();

	    }
		catch (Exception ex) {
		  System.out.println(ex.getMessage());
		}
	}
	
	// Escucha Seleccion de Tabla Vuelos Regreso
	private void jTableVuelosRegresoMouseClicked(MouseEvent evt){
		try {
		  new PlaySound("/sounds/SelectRow.wav").start();
		  Statement stmt = this.ConexionBD.createStatement();
		  String sql = "SELECT vuelos_disponibles.clase, " +
		   		              "vuelos_disponibles.Asientos_Disponibles, " +
		   		              "brinda.precio " +
		   		       "FROM   vuelos_disponibles NATURAL JOIN brinda " +
		   		       "WHERE  vuelos_disponibles.vuelo = '" +
		   		               jTableVuelosRegreso.getValueAt(jTableVuelosRegreso.getSelectedRow(), 0).toString() + "' AND " +
		   		              "vuelos_disponibles.fecha = '" +
		      		           new java.text.SimpleDateFormat("yyyy-MM-dd").format(jSpinnerFechaRegreso.getValue()) + "';";        
		  System.out.println(sql);
		  ResultSet rs = stmt.executeQuery(sql);
		  ((DefaultTableModel) this.jTableAsientosVuelosRegreso.getModel()).setRowCount(0);
		  int i = 0;
		  while (rs.next()){
		    ((DefaultTableModel) this.jTableAsientosVuelosRegreso.getModel()).setRowCount(i + 1); 
				      
			this.jTableAsientosVuelosRegreso.setValueAt(rs.getString("clase"), i, 0);
			this.jTableAsientosVuelosRegreso.setValueAt(rs.getInt("Asientos_Disponibles"), i, 1);
			this.jTableAsientosVuelosRegreso.setValueAt(rs.getFloat("precio"), i, 2);
			i++;
		  }
				    
		  rs.close();
		  stmt.close();

		  }
		  catch (Exception ex) {
			System.out.println(ex.getMessage());
		  }		
	}
	
	// Escucha Boton Realizar Reserva
	private void BotonReservarMouseClicked(MouseEvent evt) {
	  jTextFieldNroReserva.setText("");
	  jTextFieldEstadoReserva.setText("");
	  try {
		Statement stmt = this.ConexionBD.createStatement();
		String sql = "";
		ResultSet rs1 = null;
		
		Integer.parseInt(jTextFieldDocumento.getText());
		
		sql = "SELECT * FROM pasajeros " +
		      "WHERE doc_tipo = '" +
		      jComboBoxTipoDocumento.getSelectedItem().toString() + "' AND " +
		            "doc_nro  = " +
		      jTextFieldDocumento.getText() + ";";	
		
		if(stmt.executeQuery(sql).next()) {	
		    new PlaySound("/sounds/ButtonClick.wav").start();
		if(this.jSpinnerFechaRegreso.isEnabled()) { // Vuelo Ida y Vuelta
			sql = "CALL reservar_ida_vuelta('" +
			       jTableVuelosIda.getValueAt(jTableVuelosIda.getSelectedRow(), 0).toString() + "', '" +
			       new java.text.SimpleDateFormat("yyyy-MM-dd").format(jSpinnerFechaIda.getValue()) + "', '" +
			       jTableAsientosVuelosIda.getValueAt(jTableAsientosVuelosIda.getSelectedRow(), 0).toString() + "', '" +
			       
			       jTableVuelosRegreso.getValueAt(jTableVuelosRegreso.getSelectedRow(), 0).toString() + "', '" +
			       new java.text.SimpleDateFormat("yyyy-MM-dd").format(jSpinnerFechaRegreso.getValue()) + "', '" +
			       jTableAsientosVuelosRegreso.getValueAt(jTableAsientosVuelosRegreso.getSelectedRow(), 0).toString() + "', '" +
			       
			       jComboBoxTipoDocumento.getSelectedItem().toString() + "', " +
			       jTextFieldDocumento.getText() + ", " + 
			       UsuarioActual + ", @rNro, @ex);";
			System.out.println(sql);
			stmt.execute(sql); // Si Logra Ejecutar
			rs1 = stmt.getResultSet();
			if (rs1.next()) {
		     if (rs1.getObject(2) != null){ // Logra Reservar
			  jTextFieldNroReserva.setText(rs1.getString(2));
			  jTextFieldEstadoReserva.setText(rs1.getString(1));
			  jTextFieldMensaje.setDisabledTextColor(Color.green);
			  jTextFieldMensaje.setText(rs1.getString(1) + ": " + rs1.getString(2));
			  // jTextFieldMensaje.setDisabledTextColor(Color.black);
		     }
			 else { // Falla al reservar
			  jTextFieldMensaje.setDisabledTextColor(Color.red);
			  jTextFieldMensaje.setText("Error: " + rs1.getString(1));			  
	   	     }				  
			}
			rs1.close();
			stmt.close();
		}
		else { // Vuelo Solo de Ida
		  sql = "CALL reservar_solo_ida('" +
		         jTableVuelosIda.getValueAt(jTableVuelosIda.getSelectedRow(), 0).toString() + "', '" +
		         new java.text.SimpleDateFormat("yyyy-MM-dd").format(jSpinnerFechaIda.getValue()) + "', '" +
		         jTableAsientosVuelosIda.getValueAt(jTableAsientosVuelosIda.getSelectedRow(), 0).toString() + "', '" +
			     
		         jComboBoxTipoDocumento.getSelectedItem().toString() + "', " +
			     jTextFieldDocumento.getText() + ", " + 
			     UsuarioActual + ", @rNro, @ex);";
		  System.out.println(sql);
		  stmt.execute(sql); // Si Logra Ejecutar
		  rs1 = stmt.getResultSet();
		  if (rs1.next()) {
		   if (rs1.getObject(2) != null){ // Logra Reservar
			jTextFieldNroReserva.setText(rs1.getString(2));
			jTextFieldEstadoReserva.setText(rs1.getString(1));
			jTextFieldMensaje.setDisabledTextColor(Color.green);
			jTextFieldMensaje.setText(rs1.getString(1) + ": " + rs1.getString(2));
		   }
		   else { // Falla al reservar
			jTextFieldMensaje.setDisabledTextColor(Color.red);
			jTextFieldMensaje.setText("Error: " + rs1.getString(1));
 		   }				  
		  }
		  rs1.close();
	      stmt.close();
		}
	  }
	  else { // Pasajero Inexistente
		new PlaySound("/sounds/ButtonStop.wav").start();  
		jTextFieldMensaje.setDisabledTextColor(Color.red);  
		jTextFieldMensaje.setText("Pasajero Inexistente");			  
	  }}
	  catch (Exception ex) {
		  System.out.println(ex.getMessage());
		  new PlaySound("/sounds/ButtonStop.wav").start();
		  jTextFieldMensaje.setDisabledTextColor(Color.red);
		  jTextFieldMensaje.setText("Error de Entrada");
	  }
	}
	
	// UTILIDADES
	
	// Resetea la Informacion Mostrada en la Ventana
	private void Clear() {		
		this.jTableVuelosIda.clearSelection();
		this.jTableAsientosVuelosIda.clearSelection();
		this.jTableVuelosRegreso.clearSelection();
		this.jTableAsientosVuelosRegreso.clearSelection();
		
		((DefaultTableModel) this.jTableVuelosIda.getModel()).setRowCount(0);
		((DefaultTableModel) this.jTableAsientosVuelosIda.getModel()).setRowCount(0);
		((DefaultTableModel) this.jTableVuelosRegreso.getModel()).setRowCount(0);
		((DefaultTableModel) this.jTableAsientosVuelosRegreso.getModel()).setRowCount(0);
		
		if(jSpinnerFechaRegreso.isEnabled()) {
		   javax.swing.Icon Temp = jNovaButtonVuelosRegreso.getIcon();   	
		   jNovaButtonVuelosRegreso.setIcon(jNovaButtonVuelosRegreso.ButtonArmed);
		   jNovaButtonVuelosRegreso.ButtonArmed = Temp;	
		   jSpinnerFechaRegreso.setEnabled(false);
	    }
		
		jPanelSeleccionPasajero.setVisible(false);
		jPanelSeleccionVuelo.setVisible(true);
		jNovaButtonAdelante.setVisible(true);
		jNovaButtonAtras.setVisible(false);
		jNovaButtonConsultarVuelos.setVisible(true);
		jNovaButtonReservar.setVisible(false);	
		
		jTextFieldDocumento.setText("");
		jComboBoxTipoDocumento.removeAllItems();
		jTextFieldApellido.setText("");
		jTextFieldNombre.setText("");
		jTextFieldNacionalidad.setText("");
		jTextFieldTelefono.setText("");	
		
		jTextFieldNroReserva.setText("");
		jTextFieldEstadoReserva.setText("");		
		
        jTextFieldMensaje.setDisabledTextColor(Color.black);
        jTextFieldMensaje.setText("Esperando");
	}
	
    // Calcula las Ciudades Cullo Nombre Comience por city y las Agrega en Comp
	private void CalcularCiudades (String city, JComboBox Comp) {
		try {
	      // se crea una sentencia o comando jdbc para realizar la consulta
	      Statement stmt = this.ConexionBD.createStatement();
	      // se prepara el string SQL de la consulta
	      String sql = "SELECT ciudad, estado, pais " +
	      			   "FROM ubicaciones "			  +
	      			   "WHERE ciudad LIKE '" + city + "%';";
	      // se ejecuta la sentencia y se recibe un resultset
	      ResultSet rs = stmt.executeQuery(sql);
	      
	      Comp.removeAllItems();
	      //Comp.addItem("");
	      while (rs.next()){
	    	   Comp.addItem(
	    	   rs.getString("Ciudad")//+ ", " +
	    	   //rs.getString("pais")
	    	);
	      }
	      
	      rs.close();
	      stmt.close();
	      
		}
		catch (Exception ex) {
			  System.out.println (ex.getMessage());
		}
		
	}
	
    // Controla que las fechas en los spiners esten dentro de los parametros aceptables
    // Reporta el Error producido en el Text Field Mensaje
	private boolean FechasCorrectas() {
      boolean Correctas = true;	
      try {
		Statement stmt = this.ConexionBD.createStatement();
		String FechaIda = new java.text.SimpleDateFormat("yyyy-MM-dd").format(jSpinnerFechaIda.getValue());
		String FechaRegreso = new java.text.SimpleDateFormat("yyyy-MM-dd").format(jSpinnerFechaRegreso.getValue());
		String sql = "SELECT DATE_ADD(CURDATE(), INTERVAL 1 YEAR) >= '" +
		                     FechaIda + "' " +
		                     //"AND CURDATE() <= '" +    // Comentado por compatibilidad
		                     //FechaIda + "' " +         // Comentado por compatibilidad
		                     "AS IdaEnRango, " +
		                     "DATE_ADD(CURDATE(), INTERVAL 1 YEAR) >= '" +
		                     FechaRegreso + "' " +
		                     //"AND CURDATE() <= '" +    // Comentado por compatibilidad
		                     //FechaRegreso + "' " +     // Comentado por compatibilidad
		                     "AS RegresoEnRango, " +
		                     "'" + FechaIda + "' <= '" + FechaRegreso + "' " +
		                     "AS Consistente;";
		
		System.out.println(sql);
		
		ResultSet rs = stmt.executeQuery(sql);
		if (rs.next()) {
			jTextFieldMensaje.setDisabledTextColor(Color.red);
			if (!rs.getBoolean("Consistente") & jSpinnerFechaRegreso.isEnabled()) {
			   System.out.println("Fecha de Regreso Menor que de Ida");			   
			   jTextFieldMensaje.setText("Fechas Insonsistentes");
			   Correctas = false;
			}
			if (!rs.getBoolean("RegresoEnRango")){
			   System.out.println("Fecha de Regreso Fuera de Rango");
			   jTextFieldMensaje.setText("Fecha Regreso Fuera de Rango");
			   Correctas = false;
			}
			if (!rs.getBoolean("IdaEnRango")) {
			   System.out.println("Fecha de Ida Fuera de Rango");
			   jTextFieldMensaje.setText("Fecha Ida Fuera de Rango");
			   Correctas = false;
			}
		}
		
	    rs.close();
	    stmt.close();
      }
      catch (Exception ex) {
    	System.out.println (ex.getMessage());  
      }   
      
   	  return Correctas;
    }
	
	// Recupera los Tipos de Documento Existentes y los Carga en Comp
	private void CalcularTiposDocumento (JComboBox Comp) {
		try {
		  Statement stmt = this.ConexionBD.createStatement();
		  String sql = "SELECT DISTINCT doc_tipo " +
		      		   "FROM pasajeros;";
		  
		  ResultSet rs = stmt.executeQuery(sql);		      
		  Comp.removeAllItems();
		  while (rs.next()){
		    Comp.addItem(
		    rs.getString("doc_tipo"));
		  }
		      
		  rs.close();
		  stmt.close();
		      
	    }
	    catch (Exception ex) {
		  System.out.println (ex.getMessage());
	    }
	}
    
    // CLASES INTERNAS
	
	// Modelo de las Tablas de Vuelo Salida y LLegada
	private class TableModelVuelos extends DefaultTableModel{
		
		public TableModelVuelos() {
			super(
              new String[][] {},
              new String[] {"Nro. Vuelo", "Aeropuerto Salida", "Hora Salida",
            		      "Aeropuerto LLegada", "Hora LLegada", "Modelo Avion",
            		      "Tiempo Estimado"}
            );
		}
          
        @SuppressWarnings("unchecked")
	    public Class getColumnClass(int columnIndex){
          return java.lang.String.class;
        }
          
        public boolean isCellEditable(int rowIndex, int columnIndex) {
             return false;
        }
        
     };
     
    // Modelo de las Tablas de Asientos Disponibles 
 	private class TableModelAsientos extends DefaultTableModel{
		
		@SuppressWarnings("unchecked")
		Class[] types;
 		
		public TableModelAsientos () {
			super(
              new String[][] {},
              new String[] {"Clase", "Asientos Disponibles", "Precio"}
            );
			types = new Class[] {java.lang.String.class, java.lang.Integer.class, java.lang.Float.class};
		}
          
        @SuppressWarnings("unchecked")
	    public Class getColumnClass(int columnIndex){
        	return types[columnIndex];
        }
          
        public boolean isCellEditable(int rowIndex, int columnIndex) {
             return false;
        }
        
     };
	
}